package net.servir.diagnostico.web.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.servir.diagnostico.model.IdentificacionParticipante;
import net.servir.diagnostico.model.PreguntaEncuesta;
import net.servir.diagnostico.model.jsp.JspEncuesta;
import net.servir.diagnostico.service.DiagnosticoService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class EncuestaCalidadController {

	@Autowired
	private DiagnosticoService diagnosticoService;

	@RequestMapping("/encuestaCalidad.htm")
	public @ModelAttribute("encuesta") JspEncuesta ObtenerEncuesta(
			HttpServletRequest request, HttpServletResponse response) {
		JspEncuesta obj = new JspEncuesta();

		IdentificacionParticipante identParticipante = null;
		Number idParticipante = 0;
		// Obtenemos los datos de la session
		HttpSession sesion = request.getSession();
		String redirect = "";
		redirect = "acceso.htm";
		if (sesion.getAttribute("participante") == null) {
			try {
				response.sendRedirect(redirect);
			} catch (Exception e) {
				obj.setMensaje_usuario(e.getMessage());
			}
		} else
			identParticipante = (IdentificacionParticipante) sesion
					.getAttribute("participante");

		if (identParticipante == null) {
			try {
				response.sendRedirect(redirect);
			} catch (Exception e) {
				obj.setMensaje_usuario(e.getMessage());
			}
		} else {

			obj.setIdent_participante(identParticipante);

			if (identParticipante.getTipoAcceso().equals("examendiagnostico")) {
				idParticipante = identParticipante.getId_participante();
			}
			if (identParticipante.getTipoAcceso().equals(
					"resultadoexamendiagnostico")) {
				idParticipante = identParticipante
						.getId_participante_encuesta();
			}
			List<PreguntaEncuesta> preguntas = diagnosticoService
					.obtenerPreguntasEncuesta(idParticipante);

			obj.setPreguntas(preguntas);

			String accion = request.getParameter("accion");

			if (accion != null && !accion.equals("")) {
				// Recuperamos todas las alternativas seleccionadas

				for (PreguntaEncuesta preguntaEncuesta : preguntas) {
					String idPreguntaEncuesta = "P"
							+ preguntaEncuesta.getId_pregunta_encuesta()
									.toString();
					if (request.getParameter(idPreguntaEncuesta) != null
							&& !request.getParameter(idPreguntaEncuesta)
									.equals(""))
						preguntaEncuesta.setSecuencia_seleccionada(Integer
								.parseInt(request
										.getParameter(idPreguntaEncuesta)));
				}

				if (accion.equals("GRABAR")) {
					diagnosticoService.grabarRespuestaEncuesta(idParticipante,
							preguntas);
				}
				String sugerencia = request.getParameter("sugerencia");
				if (sugerencia != null && !sugerencia.equals(""))
					diagnosticoService.grabarSugerenciaEncuesta(idParticipante,
							sugerencia);

				String necesidad = request.getParameter("necesidad");
				if (necesidad != null && !necesidad.equals(""))
					diagnosticoService.grabarNecesidad(idParticipante,
							necesidad);

				if (identParticipante.getTipoAcceso().equals(
						"examendiagnostico")) {
					try {
						response.sendRedirect("mensajeFinal.htm");
					} catch (Exception e) {
						obj.setMensaje_usuario(e.getMessage());
					}
				}
				if (identParticipante.getTipoAcceso().equals(
						"resultadoexamendiagnostico")) {
					try {
						response.sendRedirect("resultadodiagnostico.htm");
					} catch (Exception e) {
						obj.setMensaje_usuario(e.getMessage());
					}
				}
			}
		}

		// diagnosticoService.grabarEnvioPrueba(idParticipante );
		// diagnosticoService.calcularPuntaje(Integer.parseInt(codParticipante));
		// diagnosticoService.enviarResultados(Integer.parseInt(codParticipante));
		return obj;
	}
}
